LEX=flex
YACC=bison
CC=g++ -std=c++11
OBJECT=pascal2asm

$(OBJECT): lex.yy.o yacc.tab.o absyn.o symboltable.o codegen.o pascal2asm.o getopt.o
	$(CC) lex.yy.o yacc.tab.o absyn.o symboltable.o codegen.o pascal2asm.o getopt.o -o $(OBJECT)


pascal2asm.o : pascal2asm.cpp
	$(CC) -c pascal2asm.cpp

codegen.o : codegen.cpp gendefine.h
	$(CC) -c codegen.cpp

getopt.o : getopt.cpp getopt.h
	$(CC) -c getopt.cpp

symboltable.o : symboltable.cpp
	$(CC) -c symboltable.cpp

absyn.o : absyn.cpp
	$(CC) -c absyn.cpp

lex.yy.o: lex.yy.c yacc.tab.h
	$(CC) -c lex.yy.c

yacc.tab.o: yacc.tab.c
	$(CC) -c yacc.tab.c

yacc.tab.c yacc.tab.h: yacc.y
	$(YACC) -d yacc.y

lex.yy.c: lex.l
	$(LEX) lex.l

clean:
	@rm -f $(OBJECT)  *.o

